// components/pickerInput/pickerInput.js
Component({

  /**
   * 组件的属性列表
   */
  properties: {
    // 可选项列表
    optionsArray: {
      type: Array,
      value: []
    },
    // 自定义输入时的 placeholder
    inputPlaceholder: {
      type: String,
      value: '请输入'
    },
    // 是否需要手动输入其他
    others: {
      type: Boolean,
      value: true
    },
    headerText: {
      type: String,
      value: ''
    }
  },

  /**
   * 组件的初始数据
   */
  data: {
    trueOptions: [], // 加入了“其他”选项的可选先
    optionIndex: -1, // 默认不做任何选择
    isInput: false, // 是否手动输入
    inputValue: '' // 手动输入值
  },

  /**
   * 生命周期
   */
  attached () {
    this.setTrueOptions();
  },

  /**
   * 数据监听
   */
  observers: {
    optionsArray (val) {
      this.setTrueOptions();
    }
  },

  /**
   * 组件的方法列表
   */
  methods: {
    // 设置待选项
    setTrueOptions () {
      const temp = [...this.data.optionsArray];
      if (this.data.others) {
        temp.push('其他');
      }
      this.setData({ trueOptions: temp });
    },
    bindCasPickerChange (e) {
      this.setData({
        isInput: +e.detail.value === this.data.trueOptions.length - 1 && this.data.others,
        optionIndex: e.detail.value
      }, () => {
        if (!this.isInput) {
          this.triggerEvent('value', { value: this.data.trueOptions[this.data.optionIndex] });
        }
      });
    },
    inputServerName (e) {
      this.setData({ inputValue: e.detail.value }, () => {
        this.triggerEvent('value', { value: this.data.inputValue });
      });
    }
  }
});
